package com.huaxin.hxmoduleworkorder.dto.request;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.Data;

import java.time.LocalDate;

/**
 * 更新巡查模板请求 DTO（包含 ID）
 * <p>
 * 对应实体类：InspectionTemplate
 * 用于接收前端提交的巡查模板更新数据，包含主键 ID。
 * 适用于需要自包含请求体的更新场景。
 * 使用 jakarta.validation 进行参数校验。
 * </p>
 *
 * @author [你的名字或团队]
 * @since 2025-09-02
 */
@Data
public class InspectionTemplateUpdateReqDTO {
    @Schema(description = "ID，主键，用于定位更新目标", example = "tpl_ins_123")
    @NotBlank(message = "ID不能为空")
    private String id;

    @Schema(description = "编码，唯一标识", example = "MONTHLY_SAFETY")
    @NotBlank(message = "编码不能为空")
    @Size(max = 50, message = "编码长度不能超过50个字符")
    private String code;

    @Schema(description = "名称", example = "月度安全巡查")
    @NotBlank(message = "名称不能为空")
    @Size(max = 100, message = "名称长度不能超过100个字符")
    private String name;

    @Schema(description = "说明", example = "每月对客户进行一次全面电气安全检查")
    @Size(max = 1000, message = "说明长度不能超过1000个字符")
    private String description;

    @Schema(description = "生效日期", example = "2025-09-01")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDate effectiveFrom;

    @Schema(description = "失效日期", example = "2026-08-31")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDate effectiveTo;
}